#include <vector>
#include <queue>

using namespace std;
class Solution
{
public:
    // 思路： 使用小根堆维护k个最大的元素
    //   小根堆的堆顶元素就是第k大的元素
    int findKthLargest(vector<int> &nums, int k)
    {
        priority_queue<int, vector<int>, greater<int>> min_heap; // 小跟堆
        for (auto num : nums)
        {
            if (min_heap.size() < k)
            { // 当前堆的元素小于k就插入堆
                min_heap.push(num);
            }
            else
            { // 比较堆顶的元素和当前值
                if (num > min_heap.top())
                {
                    min_heap.pop();
                    min_heap.push(num);
                }
            }
        }
        return min_heap.top();
    }
};